package org.forever.util
{
	/**
	* （有向）图基于DFS模板的可达分量算法
	*/
	public class DFSReachableComponent extends DFS
	{
		public function DFSReachableComponent(g:Graph) { super(g); }
		
		/**DFS过程中对顶点v的具体访问操作（info实际上是一个栈，记录所有可达的顶点）*/
		override protected function visit( v:Vertex, info:Object):Object
		{ 
			(info as Stack).push(v);
			return null; 
		}
		
		/**基于DFS的可达性算法：s为起始顶点（info实际上是一个栈，记录所有可达的顶点）*/
		public function algorithm(s:Vertex,info:Object):Object {
			reset(s);
			var S:Stack = new Stack_Array();//保存从起始顶点可达的顶点
			traverse(s, info);//DFS
			return null;
		}
	}
}